The present invention relates to network protocols, and more specifically, to checksum calculation, prediction and validation in network protocols.
Checksums are used by the Internet Protocol (IP), Transmission Control Protocol (TCP) and User Datagram Protocol (UDP), among others, for header and payload validation of data transferred across Ethernet networks. The data which each checksum covers is rigidly defined for each protocol, however given the “left to right”, or serial data stream, nature of Ethernet networks checksums are typically calculated in a linear fashion. This relies on having a complete or steady supply of data available at the time of computation. Furthermore, the process of checksum computation requires a significant amount of processing time and lends itself to being done in a hardware accelerator. Large send is another checksum feature whereby the host processor offloads TCP segmentation to a hardware engine or co-processor. A problem with this linear approach arises when data pieces arrive out of order or at different stages of processing, are stored in disjoint memory locations, or any other scenario where a complete and steady data throughput is not sustainable, all of which are often encountered in hardware accelerator Ethernet implementations.